<?

/**
 * 本文件用于生成GUID
 * 
 * @author    徐鹏程 <xupengcheng@snda.com>
 * @version   0.0.1		2010/05/29
 */

class UCLibGUID {

	/**
	 * 格式化输出，不够长的以0补全
	 */
	static function format($str, $len) {
		$l = strlen($str);
		if ($l == $len) return $str;
		if ($l > $len) return substr($str, $l - $len);
		return str_repeat('0', $len - $l) . $str;
	}

	/**
	 * 生成32位16进制UUID
	 */
	static function uuid32() {
		$ret = "";
		$time = microtime(true);

		// 时间戳16位
		$ret .= self::format(dechex(intval($time)), 8);
		$ret .= self::format(dechex(($time - intval($time)) * 1000000000), 8);
		// 随机值16位
		$ret .= self::format(dechex(mt_rand()), 8);
		$ret .= self::format(dechex(mt_rand()), 8);

		return $ret;
	}

	/**
	 * 生成16位16进制UUID
	 */
	static function uuid16() {
		$ret = "";
		$time = microtime(true);

		// 时间戳12位
		$ret .= self::format(dechex(intval($time)), 8);
		$ret .= self::format(dechex(($time - intval($time)) * 1000000), 4);
		// 随机值4位
		$ret .= format(dechex(mt_rand()), 4);

		return $ret;
	}
}
